﻿// Xshell Metadata Cache Interface
// 
// <copyright file="IMetadataCache.cs" company="TaskyMedia LLC">
//   Copyright © 2010 TaskyMedia LLC
// </copyright>

namespace Xshell
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// Represents a cache of loaded assembly metadata and reflected types.
    /// </summary>
    public interface IMetadataCache
    {
        /// <summary>
        /// Adds an assembly to the metadata cache and loads the Types from the assembly.
        /// </summary>
        /// <param name="assemblyToAdd">The assembly to add.</param>
        void AddAssembly(System.Reflection.Assembly assemblyToAdd);

        /// <summary>
        /// Gets a list of the cached types.
        /// </summary>
        /// <returns>Returns a list of the cached types</returns>
        IEnumerable<Type> GetCachedTypes();
    }
}
